package com.alks.function.service.finance.mtlcosts;

import com.alks.entity.data.response.ResponseInfo;
import com.alks.function.data.dto.finance.mtlcosts.SupCfmPrintDto;
import com.alks.function.data.request.finance.mtlcosts.FinSuppHeadRequest;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author MS
 * @since 2024/6/14上午9:50
 */
public interface IPcSuppCfmService {
    /**
     * 补料单资料查询-可条件查询
     * @param request 查询条件
     * @return 查询数据
     */
    ResponseInfo suppHeadQuery(FinSuppHeadRequest request);

    /**
     * 补料明细查询-查询
     * @param slipNo 补料单号
     * @return 明细数据
     */
    ResponseInfo suppDetQuery(String slipNo);

    /**
     * 贴合子材料查询-条件查询
     * @param mtlNo 材料编号
     * @return 贴合子材料数据
     */
    ResponseInfo fitSubQuery(String mtlNo);

    /**
     * 取单价,费用计算 -新增或更新
     *
     * @param slipNo 订单号
     * @param type   1.取材料单价 2.计算责任金额 3.计算人工费用
     * @param dept
     * @return 更新结果
     */
    ResponseInfo suppCostComp(String slipNo, Integer type, String dept);

    /**
     * 补单检核-修改1
     * @param slipNos  订单号
     * @param type 0.取消检核 1.检核
     * @return 检核结果
     */
    ResponseInfo suppFinalCheck(List<String> slipNos, Integer type);

    /**
     * 补料明细单价修改-修改
     * @param slipNo 订单号
     * @param mtlNo 材料号
     * @param price 单价
     * @return 修改结果
     */
    ResponseInfo suppDetPriceUpdate(String slipNo, String mtlNo, BigDecimal price);

    /**
     * 免扣金额修改-修改
     *
     * @param slipNo   订单号
     * @param dutyName
     * @param freeAmt  免扣金额
     * @return 修改结果
     */
    ResponseInfo suppDutyPriceUpdate(String slipNo, String dutyName, BigDecimal freeAmt);

    /**
     * 财务备注修改
     * @param slipNo
     * @param cwRek
     */
    void suppRekUpdate(String slipNo, String cwRek);

    /**
     * 打印核算单
     *
     * @param slipNo 订单号
     * @param lotNo
     * @return 打印数据
     */
    SupCfmPrintDto cfmPrint(String slipNo, String lotNo);
}
